System and methods for simplifying three-dimensional models

ABSTRACT

A polygon simplification computer system for performing polygon simplification within a web application pipeline has a memory device including a three-dimensional data model (3D data model), a Node.js environment, and a polygon simplification module for performing one or more polygon simplification operations on the 3D data model. The polygon simplification module has a binding component including a set of bindings that convert JavaScript into C++ source code, and a mesh simplification module comprising a C++ compiled polygon simplification framework. The polygon simplification module receives a request for the 3D data model, converts the request into a set of C++ instructions, transmits the instructions to the mesh simplification module, receives a 3D simplified data model, and transmits the 3D simplified data model to a client computing device.

FIELD

Embodiments of the invention relate generally to systems and methods forsimplifying three-dimensional models, and more particularly, to systemsand methods for performing polygon simplification on a 3D data model foruse within a web application pipeline.

BACKGROUND

Insurance companies use various techniques and data to investigatedamage or loss claims submitted by property owners. For example, afteran accident or loss, a property owner typically files a claim with hisor her insurance company, and in response to the claim, the insurancecompany may assign an appraiser to investigate the claim. The appraiserdetermines the extent of damage and/or loss, documents the damage, andprovides the property owner with appropriate compensation.

The process for determining and documenting the extent of the damage canbe inefficient and time consuming. For example, an insurance appraisermay take photos of a roof of a building to assess a claim for roofdamage or multiple photos of a vehicle to assess accident damage. Insome instances, the property owner may submit photos of the damagedproperty. Two-dimensional digital pictures or videos of a structure orvehicle, however, often provide inadequate detail for a thoroughinspection of the claimed damage. Poor image quality resulting fromcamera movement or out-of-focus images can make it difficult to estimatethe condition of a property based on an image. Even where image qualityis adequate, poor angles or bad lighting may hide or exaggerate detailsimportant to estimating the condition of the structure, leading toinaccurate assessments of the structure's condition. The two-dimensionaldigital pictures, however, can be converted into three-dimensionalmodels. In addition, in some instances, an appraiser or property ownermay directly capture three-dimensional models of the damaged property,for example, using photogrammetry, active depth capture via infrared,and the like. The appraiser can view such three-dimensional models in aweb, mobile, or desktop application via a two-dimensional displayscreen, a virtual reality device, or an augmented reality device.

The three-dimensional models typically generate massive polygonal orpoint cloud datasets. Interactive rendering of such massive geometry inweb-based computer applications can be impractical due to theperformance penalty for data throughput and the associated large memorystorage requirements. Mesh simplification is a technology that canfacilitate more performant rendering for interactive 3D applications,but such mesh simplification is not typically available in web-baseddevelopment pipelines.

BRIEF DESCRIPTION OF THE INVENTION

In one aspect, a polygon simplification computer system for performingpolygon simplification within a web application pipeline is provided.The computer system includes a polygon simplification server, which hasa memory device including a three-dimensional data model (3D datamodel), a Node.js environment, and a polygon simplification module forperforming one or more polygon simplification operations on the 3D datamodel. The polygon simplification module includes a binding componenthaving a set of bindings that convert JavaScript into C++ source code,and a mesh simplification module including a C++ compiled polygonsimplification framework. The polygon simplification module isconfigured to receive a request for the 3D data model from a clientcomputing device. In addition, the polygon simplification module isconfigured to convert the request for the 3D data model into a set ofinstructions written in C++ source code and transmit the set ofinstructions to the mesh simplification module. Furthermore, the polygonsimplification module is configured to receive, from the meshsimplification module, a 3D simplified data model, and transmit the 3Dsimplified data model to the client computing device.

In another aspect, a computer-implemented method for performing polygonsimplification within a web application pipeline is provided. The methodincludes receiving, from a client computing device, a request for a 3Ddata model. The method also includes converting the received requestinto a set of instructions written in C++ source code and transmittingthe set of instructions to a mesh simplification module. Furthermore,the method includes receiving, from the mesh simplification module, a 3Dsimplified data model, and transmitting the 3D simplified data model tothe client computing device.

In yet another aspect, one or more computer-readable media havingcomputer-executable instructions is provided. The computer-executableinstructions, upon execution by a processor, cause the processor toperform operations including receiving, from a client computing device,a request for a 3D data model and converting the received request into aset of instructions written in C++ source code. In addition, thecomputer-executable instructions cause the processor to performadditional operations including transmitting the set of instructions toa mesh simplification module, receiving, from the mesh simplificationmodule, a 3D simplified data model, and transmitting the 3D simplifieddata model to the client computing device.

This summary is provided to introduce a selection of concepts in asimplified form that are further described in the detailed descriptionbelow. This summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter. Other aspectsand advantages of the present invention will be apparent from thefollowing detailed description of the embodiments and the accompanyingdrawing figures.

DRAWINGS

The figures described below depict various aspects of systems andmethods disclosed therein. Each figure depicts an embodiment of aparticular aspect of the disclosed devices and methods, and each of thefigures is intended to accord with a possible embodiment thereof.Further, wherever possible, the following description refers to thereference numerals included in the following figures, in which featuresdepicted in multiple figures are designated with consistent referencenumerals. The present embodiments are not limited to the precisearrangements and instrumentalities shown in the figures.

The features, aspects, and advantages of the present disclosure willbecome better understood when the following detailed description is readwith reference to the accompanying drawings in which like charactersrepresent like parts throughout the drawings, wherein:

FIG. 1 is an exemplary polygon simplification computer system;

FIG. 2 is a schematic of an exemplary computing device that may be usedwith the polygon simplification computer system shown in FIG. 1;

FIG. 3 is a schematic of software components of a computer server of thepolygon simplification computer system shown in FIG. 1, and forperforming polygon simplification on a 3D data model; and

FIG. 4 is a flow diagram of an exemplary method for performing polygonsimplification within a web application pipeline and that may be usedwith the polygon simplification computer system shown in FIG. 1.

Unless otherwise indicated, the drawings provided herein are meant toillustrate features of embodiments of this disclosure. These featuresare believed to be applicable in a wide variety of systems comprisingone or more embodiments of this disclosure. As such, the drawings arenot meant to include all conventional features known by those ofordinary skill in the art to be required for the practice of theembodiments disclosed herein. The drawings are not necessarily to scale,emphasis instead being placed upon clearly illustrating the principlesof the embodiments of this disclosure.

DETAILED DESCRIPTION

The following detailed description of embodiments of the disclosurereferences the accompanying drawings. The embodiments are intended todescribe aspects of the disclosure in sufficient detail to enable thoseskilled in the art to practice the disclosure. Other embodiments can beutilized and changes can be made without departing from the scope of theclaims. The following detailed description is, therefore, not to betaken in a limiting sense. The scope of the present disclosure isdefined only by the appended claims, along with the full scope ofequivalents to which such claims are entitled.

The present embodiments described in this disclosure and other possibleembodiments address the need for reducing the size and complexity of 3Dmodels, and more specifically, for simplifying and/or smoothing 3Dmodels for use by web-based technologies and/or in web-basedenvironments.

Embodiments of the present invention include one or more clientcomputing devices coupled to a polygon simplification sever system via anetwork, such as the Internet. The polygon simplification sever systemreceives a request for a 3D data model from one of the client computingdevices. The request for the 3D data model is routed through a polygonsimplification Node.js module where JavaScript input is converted to C++source code instructions for instructing a C++ polygon simplificationframework to load and simplify the 3D data model. The polygonsimplification framework then outputs and transmits a simplified 3D datamodel to the requesting client computing device. As such, the polygonsimplification Node.js module facilitates calling a C++ polygonsimplification library effortlessly from JavaScript without changes tothe native C++ polygon simplification library.

Exemplary Polygon Simplification System

FIG. 1 is an exemplary polygon simplification computer system 10. Thecomputer system 10, and/or portions thereof, can be implemented by oneor more computing devices and can be implemented by software, hardware,firmware, and/or any combination thereof. Furthermore, in someembodiments, the computer system 10 may include additional, fewer, oralternative devices, including those described elsewhere herein. Thecomputing devices illustrated in FIG. 1 may be conventional computingdevices, although other embodiments may have different configurations,architectures, and/or components. In addition, in the embodimentsdescribed herein, implementations of the computer system 10 aredescribed in the context of one or more computing devices configured toperform various operation, methods, and/or functions in accordance withaspects of the disclosure. The computer system 10 includes a combinationof hardware and software. Generally, the computer system 10 can includeone or more processors, memory devices, various input and/or outputdevices, communication interfaces, and/or other types of devices. In theembodiments described herein, the computer system 10 includes aprocessor configured to execute computer-executable instructions and acomputer-readable medium (e.g., a memory device and/or additionalhardware storage) for storing the computer-executable instructionsconfigured to perform the various operations, methods, and/or functionsin accordance with aspects of the disclosure.

The computer system 10 can be implemented as a distributed computersystem in which components are located on different computing devicesthat are connected to each other through a network (e.g., wired and/orwireless) and/or other forms of direct and/or indirect data connections.For example, the computer system 10 can use redundant and/orgeographically dispersed datacenters. In addition, the computer system10 can provide hosted and/or cloud-based services. The computer system10 can be implemented by physical server systems of a datacenter thatprovide shared computing and storage resources and that host virtualmachines having various roles for performing different tasks inconjunction with providing cloud-based services.

In the exemplary embodiment, a three-dimensional data model 12 (3D datamodel) is provided, for example by a polygon simplification server 14where it has been previously stored. The 3D data model 12 may beintended for various purposes, but in the computer system 10 it is a 3Ddata model of a claimant's insured property that is intended for displayand/or use on one or more of a plurality of client computing devices 20(e.g., a model of a damage vehicle, home, personal property, etc.). Theserver 14 can be configured to provide various types of services and/ordata stores in accordance with various aspects of the disclosure.Example server system computing devices can include, for example, andwithout limitation, web servers, front end servers, application servers,database servers (e.g., SQL servers), domain controllers, domain nameservers, directory servers, and/or any other suitable computing devices.As described herein, the server 14 can be implemented, for example, andwithout limitation, as a virtual machine.

A client computing device 20 may include, for example, and withoutlimitation, personal computers, smart phones, tablet computers, or anyother suitable computing devices. In general, each client computingdevice 20 includes an operating system 24 for providing services tosoftware components running on the client computing device 20 such as aweb browser 22.

The 3D data model 12 may be delivered to a polygonal manipulationcomputing device 16 where it is transformed into a 3D simplified datamodel 18. The 3D simplified data model 18 is transmitted to the clientcomputing device 20 in various forms, but typically may be in the formof a computer-generated mesh produced after performing meshsimplification operations, e.g. polygonal simplification, decimation,smoothing, etc., on the 3D data model 12 by the polygonal manipulationcomputing device 16. Computer-generated meshes, such as the 3D datamodel 12 and the 3D simplified data model 18, constitute visualrepresentations of three-dimensional surfaces, for example, and withoutlimitation, of objects such as a claimant's insured property describedabove. It is to be appreciated that the output, such as the 3Dsimplified data model 18, can be produced by the computer system 10 orother suitable computer systems. For example, and without limitation,the computer system 10, and in particular, the client computing device20, can display visual representations of the 3D simplified data model18 received from the polygonal manipulation computing device 16.

The 3D simplified data model 18 may typically be delivered to the one ormore client computing devices 20 over a data network 28 such as theInternet by a remote web server 30, although other delivery andinstallation arrangements may be used. The web server 30, or one or moreequivalent server systems, may also provide data, support, digitalrights management, and/or other services 32 to the client computingdevices 20 and in particular to the web browser 22 executing on theclient computing devices 20.

In one suitable embodiment, the 3D data model 12 and/or the 3Dsimplified data model 18 may be vulnerable to copying and/or compromisein various ways on the server 14, web server 30, and/or client computingdevice 20. For example, the 3D data model 12 and/or the 3D simplifieddata model 18 may implement digital rights management techniques whichan attacker may try to compromise by extracting an encryption key ordetails of an algorithm which can enable future circumvention of thedigital rights management techniques for the 3D data model 12 and/or the3D simplified data model 18. Such digital rights techniques could beimplemented in the server 14, the web server 30, in a developmentenvironment (not shown), or elsewhere in the computer system 10.

In the exemplary embodiment, the polygonal manipulation computing device16 performs a mesh simplification process on an input model, such as the3D data model 12, and generates an output mesh, such as the 3Dsimplified data model 18, for delivery to the client computing device20. The mesh simplification process is executed by a mesh simplificationmodule 42 (a C++ compiled polygon simplification framework) on thepolygonal manipulation computing device 16 under the control of anoperating system 26. The polygonal manipulation computing device 16typically includes one or more processors 34 that execute the meshsimplification process of the mesh simplification module 42 using amemory device 36. In some embodiments, a user can control the polygonalmanipulation computing device 16 through an input/output device 40. Thepolygonal manipulation computing device 16 and functionality of the meshsimplification module 42 may be distributed across a plurality ofcomputing devices coupled in communication with each other by one ormore suitable network connections. In the exemplary embodiment, at leasta portion of the software used to provide the mesh simplificationprocess may be stored in a data storage device 38, in one or morecomputer readable media, such as the memory device 36, and/or may betransmitted over a data network to the polygonal manipulation computingdevice 16.

While described herein as separate computing devices, it is noted thatthe server 14, the polygonal manipulation computing device 16, and theweb server 30 may be may be implemented in one or more computingdevices. For example, and without limitation, in one embodiment, theserver 14 and the polygonal manipulation computing device 16 may beimplemented in one computing device that communicates with a separateweb server 30. In another, embodiment, the server 14, the polygonalmanipulation computing device 16, and the web server 30 may beimplemented in a single computing device, wherein the polygonalmanipulation computing device 16 and the web server 30 may beimplemented by software, hardware, firmware, and/or any combinationthereof, as is described above.

Exemplary Computing Device

FIG. 2 is a schematic of an exemplary computing device 200. Thecomputing device 200 may include, but is not limited to, the server 14,the polygonal manipulation computing device 16, the client computingdevice 20, and/or the web server 30 (each shown in FIG. 1). Thecomputing device 200 may include a processor 202 for executinginstructions. The instructions may be stored in a memory 204. Theprocessor 202 may include one or more processing units (e.g., in amulti-core configuration). The processor 202 may be operatively coupledto a communication interface 206 such that, for example, the clientcomputing device 20 can communicate with one or more remote devices,such as the server 14, the polygonal manipulation computing device 16,the web server 30, and/or another computing device (not shown), forexample, using wireless communication or data transmission over one ormore radio links or digital communication channels. For example, in someembodiments, the communication interface 206 may transmit a request forand/or receive the 3D simplified data model 18 (shown in FIG. 1).

The memory 204 may include electronic hardware data storage componentssuch as read-only memory (ROM), programmable ROM, erasable programmableROM, random-access memory (RAM) such as static RAM (SRAM) or dynamic RAM(DRAM), cache memory, hard disks, floppy disks, optical disks, flashmemory, thumb drives, universal serial bus (USB) drives, or the like,and/or combinations thereof. In some embodiments, the memory 204 may beembedded in, or packaged in the same package as, the processor 202. Thememory 204 may include, or may constitute, a “computer-readable medium.”The memory 204 may store the instructions, code, code segments,software, firmware, programs, applications, apps, services, daemons, orthe like that are executed by the processor 202. The memory 204 may alsostore settings, data, documents, databases, system logs and the like.

The computing device 200 may also include at least one media outputcomponent 208 for presenting information to, for example, a user 210.The media output component 208 may be any component capable of conveyinginformation to the user 210. In some embodiments, the media outputcomponent 208 may include an output adapter (not shown) such as a videoadapter and/or an audio adapter. The output adapter may be operativelycoupled to the processor 202 and operatively coupleable to an outputdevice such as a display device (e.g., a cathode ray tube (CRT), liquidcrystal display (LCD), light emitting diode (LED) display, organic LED(OLED), or “electronic ink” display) and/or an audio output device(e.g., a speaker or headphones). In some embodiments, the media outputcomponent 208 may be configured to present a graphical user interface(e.g., a web browser and/or a client application) to the user 210. Agraphical user interface may include, for example, an interface forviewing prompts, status messages, and the like.

In some embodiments, the computing device 200 may include an inputdevice 212 for receiving input from the user 210. The input device 212may include, for example, a keyboard, a pointing device, a mouse, astylus, a touch sensitive panel (e.g., a touch pad or a touch screen), agyroscope, an accelerometer, a position detector, a biometric inputdevice, and/or an audio input device. A single component such as a touchscreen may function as both an output device of the media outputcomponent 208 and the input device 212.

Furthermore, in some embodiments, the processor 202 may be operativelycoupled to a storage device 214 via a storage interface 216. The storageinterface 216 may be any component capable of providing the processor202 with access to the storage device 214. The storage interface 216 mayinclude, for example, and without limitation, an Advanced TechnologyAttachment (ATA) adapter, a Serial ATA (SATA) adapter, a Small ComputerSystem Interface (SCSI) adapter, a RAID controller, a SAN adapter, anetwork adapter, and/or any component providing the processor 202 withaccess the to the storage device 214.

The storage device 214 may be any computer-operated hardware suitablefor storing and/or retrieving data, such as, but not limited to, dataassociated with the server 14 (shown in FIG. 1). In some embodiments,the storage device 214 may be integrated into, for example, the server14, the webserver 30, and/or the client computing device 20. Forexample, the computing device 200 may include one or more hard diskdrives or other memory component that functions as the storage device212.

In some embodiments, the storage device 214 may be external to thecomputing device 200 and may be accessed by one or more computingdevices, such as the server 14, the polygonal manipulation computingdevice 16, the client computing device 20, and/or the web server 30. Forexample, the storage device 214 may include a storage area network(SAN), a network attached storage (NAS) system, and/or multiple storageunits such as hard disks and/or solid-state disks in a redundant arrayof inexpensive disks (RAID) configuration.

The processor 202 may execute computer-executable instructions forimplementing aspects of the disclosure. In some embodiments, theprocessor 202 may be transformed into a special purpose microprocessorby executing computer-executable instructions or by otherwise beingprogrammed. For example, the processor 202 may be programmed withinstructions such as those illustrated in FIG. 4.

Exemplary Polygon Simplification Module

FIG. 3 is a schematic of software components 300 of the server 14 forperforming polygon simplification on the 3D data model 12. The softwarecomponents 300 may be executed by a processor, such as the processor 34(shown in FIG. 2). In the exemplary embodiment, the server 14 and inparticular, the web server 30 may be configured to receive a request toprovide or transmit the 3D data model 12 to a requesting computingdevice, such as the client computing device 20 (shown in FIG. 2) forviewing in a web browser and/or by a virtual reality (VR) device coupledto the client computing device 20. The 3D data model 12, however, may bea large file that cannot be rendered or displayed at a sufficiently highenough rendering rate to provide a satisfactory user experience.

Rendering rate includes, for example, an amount of data rendered peramount of time, e.g., the rendering rate may be measured as pixelsrendered per second (e.g., pixel rendering rate), bits rendered persecond (e.g., bit rendering rate), a frame rate or frame rendering rate(e.g., frames per second), or any other rendering performancemeasurement that enables the server 14 to function as described herein.If the rendering rate is insufficient or does not achieve a minimal (orthreshold) rendering rate, significant latency or lag may be experiencedby a user who is viewing or experiencing the 3D data model 12 in aninteractive 3D application. This can result in the user experiencing asignificant lag or latency in changes or updates to the displayed 3Ddata model 12 in response to user motion or actions. In some cases,significant latency in the rendering of the 3D data model 12 can causemotion sickness or nausea by the user, especially if the application isbeing viewed or experienced in a VR environment. As such, in theexemplary embodiment, the software components 300 of the server 14include a polygon simplification module 304 (i.e., a Node.js module)configured to simplify the 3D data model 12 into a smaller 3D simplifieddata model 18 to facilitate improving the rendering rate of the model.In the exemplary embodiment, the rendering rate of the 3D simplifieddata model 18 may be in the range between and including about 60 framesper second and about 90 frames per second. The rendering rate of the 3Ddata model 12, prior to polygon simplification operations, may be lessthan about 60 frames per second.

In the exemplary embodiment, the server 14 includes the communicationinterface 206 as described herein, which connects the server 14 to othercomputing devices, such as the client computing device 20. Preferably,the communication interface 206 has a Node.js environment 306 connectedto or integral with it. Node.js is a JavaScript runtime environment forexecuting JavaScript code on the server-side of a typical client/serverrelationship. Historically, JavaScript was used for client-sidescripting, in which scripts written in JavaScript were embedded in awebpage's code to be run client-side by a JavaScript engine in theclient-side web browser. Node.js enables JavaScript to be used forserver-side scripting. For example, Node.js facilitates developers toincorporate the functionality of JavaScript code modules known as “nodepackaged modules” (also referred to herein as “Node.js modules”) bysimply referencing such modules in their source code files.

In the exemplary embodiment, the polygon simplification module 304(i.e., the Node.js module) may include at least a portion of JavaScriptand run on a Windows operating system (OS), an Apple OS, or a Linux OS.The polygon simplification module 304 includes a binding component 308that includes a set of bindings or headers 310 that facilitateconverting JavaScript to C++ code 312, thereby facilitating making C++libraries accessible from JavaScript. The binding component 308typically is an application programming interface (API) that providesglue code to use a library or service in a given programming language,for example using a C++ library in JavaScript. Binding generally refersto wrapper libraries that bridge two programming languages, so that alibrary written for one language (e.g., C++) can be used in anotherlanguage (e.g., JavaScript).

In the exemplary embodiment, the C++ code 312 includes a set ofinstructions written in C++ source code and includes identifying the 3Ddata model 12 stored, for example, in a memory device 314, that is to beread by the mesh simplification module 42. In addition, the set ofinstructions may include any user specified arbitrary traits forvertices, edges, and faces or set of predefined attributes to bepropagated to the mesh simplification module 42, and instructions forwriting the 3D simplified data model 18, which may be transmitted, forexample, to the client computing device 20 and/or stored in the memorydevice 314. The memory device 314 may include electronic hardware datastorage components such as read-only memory (ROM), programmable ROM,erasable programmable ROM, random-access memory (RAM) such as static RAM(SRAM) or dynamic RAM (DRAM), cache memory, hard disks, floppy disks,optical disks, flash memory, thumb drives, universal serial bus (USB)drives, or the like, and/or combinations thereof.

In the exemplary embodiment, the mesh simplification module 42 maydecompose an input model or mesh, such as the 3D data model 12, intogeometrically separate component meshes, each of which can be simplifiedto reduce the number of polygonal faces or triangles in each componentmesh. The simplified component meshes can be reassembled into acombined, simplified mesh, such as the 3D simplified data model 18. Themesh simplification module 42 may include, for example, and withoutlimitation, a mesh generation module 44, a mesh decimation module 46,and a mesh smoothing module 48. The mesh generation module 44 can beconfigured and utilized to generate a mesh that represents a 3D modelsurface from the 3D data model 12 defined by a set of data including,for example, and without limitation, point cloud data. The meshgeneration module 44 can produce an input mesh that represents thethree-dimensional model surface as polygons (i.e., faces or triangles)interconnected by vertices and edges. The mesh decimation module 46 canbe configured and utilized to decompose the 3D data model 12 into aplurality of component meshes. The mesh smoothing module 48 can beconfigured and utilized to improve the mesh surface quality, removenoise, and/or preserve sharp features of the 3D data model 12.

Exemplary Computer-Implemented Method for Performing PolygonSimplification within a Web Application Pipeline

FIG. 4 is a flow diagram of an exemplary method 400 for performingpolygon simplification within a web application pipeline and that may beused with the polygon simplification computer system 10 (shown in FIG.1). The method 400 may be at least partially performed by the server 14(shown in FIG. 1). In certain embodiments, the method 400 may be atleast partially performed by another computing device, such as thepolygonal manipulation computing device 16 (shown in FIG. 1) and/or theweb server 30 (shown in FIG. 1). However, a person having ordinary skillwill appreciate that responsibility for all or some of such actions maybe distributed differently among such devices or other computing deviceswithout departing from the spirit of the present invention. The method400 may include additional, fewer, or alternative operations, includingthose described elsewhere herein. The various operations or set ofoperations may be performed in parallel with other operations, either ina synchronous or asynchronous manner. In addition, some operations maybe optional.

A computer-readable medium may also be provided. The computer-readablemedium may include an executable program stored thereon, wherein theprogram instructs one or more processors to perform one or more of theoperations outlined herein. The program stored on the computer-readablemedium may instruct the processor to perform additional, fewer, oralternative actions, including those discussed elsewhere herein.

In the exemplary embodiment, the method 400 is a method by which a C++framework, API, and/or library, such as the mesh simplification module42 (shown in FIG. 1), may be easily consumable (e.g., run and/orexecuted) in a web-based environment. Typically, C++ libraries are notcallable or accessible from JavaScript, for example, that may be run inthe Node.js environment 306 (shown in FIG. 3). In the exemplaryembodiment, the mesh simplification module 42, however, includes atleast one native C++ library and a binding component to facilitateaccess or calls from JavaScript, thereby facilitating platformindependent execution, such as in a web-based environment or the Node.jsenvironment 306.

With respect to FIGS. 1-4, the method 400 may begin with the server 14and in particular, the web server 30 running 402 the polygonsimplification module 304 within Node.js as a platform independentJavaScript application so it is accessible from the client computingdevices 20 via a web browser, such as the web browser 22 (shown in FIG.1). The polygon simplification module 304 receives 404 a request fromone or more of the client computing devices 20 for the 3D data model 12.The requesting client computing device 20 requests the 3D data model 12for display of the model, for example, in a web browser, such as the webbrowser 22 (shown in FIG. 1), via a 2D display, or via a VR or AR device(e.g., a VR headset) coupled to the client computing device 20.

In the exemplary embodiment, the client computing devices 20 may utilizea web-based virtual reality API, such as WebVR, to display the requested3D model to the user. WebVR is a JavaScript API that leverages thebrowser-based graphics library to run VR applications. Because WebVR isweb-based and utilizes browser-based graphics, performance is importantto provide an adequate user experience. Notable issues are the loadingtime and rendering speed of large files, such as the 3D data model 12.Also, because WebVR is a JavaScript API, the technology stack for WebVRdevelopment does not include support for accessing and/or running nativeC++ applications.

The polygon simplification module 304 may convert 406 the request forthe 3D data model 12 into the set of instructions 312 written in C++source code and transmit 408 the set of instructions 312 to the meshsimplification module 42. The instructions 312 are in the form of C++source code and may include, for example, and without limitation,identifying information for the 3D data model 12 stored, for example, inthe memory device 314. In some embodiments, the user may also specifyarbitrary traits for vertices, edges, and faces or a set of predefinedattributes to be propagated to the mesh simplification module 42. Insuch embodiments, the instructions 312 include these additional traitsor attributes. In the exemplary embodiment, the instructions 312 alsoinclude information for writing the 3D simplified data model 18.

After receiving the set of instructions 312, the mesh simplificationmodule 42 may simplify and/or smooth the 3D data model 12. In addition,in some embodiments, where the 3D data model 12 consists of point clouddata and the like, the mesh simplification module 42 may generate a 3Dmesh model from the data prior to simplifying and/or smoothing the data.

After the mesh simplification module 42 processes (i.e., simplifiesand/or smooths) the 3D data model 12, the mesh simplification module 42may generate 410 the 3D simplified data model 18 from the processed dataand transmit 412 it to the polygon simplification module 304. In onesuitable embodiment, the 3D simplified data model 18 may be subsequentlywritten to the memory device 314 for future access from one or more ofthe client computing devices 20. In the exemplary embodiment, the method400 includes transmitting 414 the 3D simplified data model 18 to therequesting client computing device 20.

Additional Considerations

In this description, references to “one embodiment,” “an embodiment,” or“embodiments” mean that the feature or features being referred to areincluded in at least one embodiment of the technology. Separatereferences to “one embodiment,” “an embodiment,” or “embodiments” inthis description do not necessarily refer to the same embodiment and arealso not mutually exclusive unless so stated and/or except as will bereadily apparent to those skilled in the art from the description. Forexample, a feature, structure, act, etc. described in one embodiment mayalso be included in other embodiments, but is not necessarily included.Thus, the current technology can include a variety of combinationsand/or integrations of the embodiments described herein.

Although the present application sets forth a detailed description ofnumerous different embodiments, it should be understood that the legalscope of the description is defined by the words of the claims set forthat the end of this patent and equivalents. The detailed description isto be construed as exemplary only and does not describe every possibleembodiment since describing every possible embodiment would beimpractical. Numerous alternative embodiments may be implemented, usingeither current technology or technology developed after the filing dateof this patent, which would still fall within the scope of the claims.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

As will be appreciated based upon the foregoing disclosure, theabove-described embodiments may be implemented using computerprogramming or engineering techniques including computer software,firmware, hardware or any combination or subset thereof. Any suchresulting program, having computer-readable code means, may be embodiedor provided within one or more computer-readable media, thereby making acomputer program product, i.e., an article of manufacture, according tothe discussed embodiments of the disclosure. The computer-readable mediamay be, for example, but is not limited to, a fixed (hard) drive,diskette, optical disk, magnetic tape, semiconductor memory such asread-only memory (ROM), and/or any transmitting/receiving medium such asthe Internet or other communication network or link. The article ofmanufacture containing the computer code may be made and/or used byexecuting the code directly from one medium, by copying the code fromone medium to another medium, or by transmitting the code over anetwork.

These computer programs (also known as programs, software, softwareapplications, “apps,” or code) include machine instructions for aprogrammable processor, and can be implemented in a high-levelprocedural and/or object-oriented programming language, and/or inassembly/machine language. As used herein, the terms “machine-readablemedium” and “computer-readable medium” refer to any computer programproduct, apparatus and/or device (e.g., magnetic discs, optical disks,memory, Programmable Logic Devices (PLDs)) used to provide machineinstructions and/or data to a programmable processor, including amachine-readable medium that receives machine instructions as amachine-readable signal. The “machine-readable medium” and“computer-readable medium,” however, do not include transitory signals.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

As used herein, the terms “software” and “firmware” are interchangeable,and include any computer program stored in memory for execution by aprocessor, including RAM memory, ROM memory, EPROM memory, EEPROMmemory, and non-volatile RAM (NVRAM) memory. The above memory types areexample only, and are thus not limiting as to the types of memory usablefor storage of a computer program.

Certain embodiments are described herein as including logic or a numberof routines, subroutines, applications, or instructions. These mayconstitute either software (e.g., code embodied on a machine-readablemedium or in a machine-readable signal) or hardware. In hardware, theroutines, etc., are tangible units capable of performing certainoperations and may be configured or arranged in a certain manner. Inexample embodiments, one or more computer systems (e.g., a standalone,client or server computer system) or one or more hardware modules of acomputer system (e.g., a processor or a group of processors) may beconfigured by software (e.g., an application or application portion) ascomputer hardware that operates to perform certain operations asdescribed herein.

In various embodiments, computer hardware, such as a processor, may beimplemented as special purpose or as general purpose. For example, theprocessor may comprise dedicated circuitry or logic that is permanentlyconfigured, such as an application-specific integrated circuit (ASIC),or indefinitely configured, such as an FPGA, to perform certainoperations. The processor may also comprise programmable logic orcircuitry (e.g., as encompassed within a general-purpose processor orother programmable processor) that is temporarily configured by softwareto perform certain operations. It will be appreciated that the decisionto implement the processor as special purpose, in dedicated andpermanently configured circuitry, or as general purpose (e.g.,configured by software) may be driven by cost and time considerations.

Accordingly, the terms “processor,” “processing element,” or equivalentsshould be understood to encompass a tangible entity, be that an entitythat is physically constructed, permanently configured (e.g.,hardwired), or temporarily configured (e.g., programmed) to operate in acertain manner or to perform certain operations described herein.Considering embodiments in which the processor is temporarily configured(e.g., programmed), each of the processors need not be configured orinstantiated at any one instance in time. For example, where theprocessor comprises a general-purpose processor configured usingsoftware, the general-purpose processor may be configured as respectivedifferent processors at different times. Software may accordinglyconfigure the processor to constitute a particular hardwareconfiguration at one instance of time and to constitute a differenthardware configuration at a different instance of time.

Computer hardware components, such as communication elements, memoryelements, processing elements, and the like, may provide information to,and receive information from, other computer hardware components.Accordingly, the described computer hardware components may be regardedas being communicatively coupled. Where multiple of such computerhardware components exist contemporaneously, communications may beachieved through signal transmission (e.g., over appropriate circuitsand buses) that connect the computer hardware components. In embodimentsin which multiple computer hardware components are configured orinstantiated at different times, communications between such computerhardware components may be achieved, for example, through the storageand retrieval of information in memory structures to which the multiplecomputer hardware components have access. For example, one computerhardware component may perform an operation and store the output of thatoperation in a memory device to which it is communicatively coupled. Afurther computer hardware component may then, at a later time, accessthe memory device to retrieve and process the stored output. Computerhardware components may also initiate communications with input oroutput devices, and may operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processingelement-implemented modules that operate to perform one or moreoperations or functions. The modules referred to herein may, in someexample embodiments, comprise processing element-implemented modules.

Similarly, the methods or routines described herein may be at leastpartially processing element-implemented. For example, at least some ofthe operations of a method may be performed by one or more processingelements or processing element-implemented hardware modules. Theperformance of certain of the operations may be distributed among theone or more processing elements, not only residing within a singlemachine, but deployed across a number of machines. In some exampleembodiments, the processing elements may be located in a single location(e.g., within a home environment, an office environment or as a serverfarm), while in other embodiments the processing elements may bedistributed across a number of locations.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer with a processing element andother computer hardware components) that manipulates or transforms datarepresented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or a combination thereof), registers, or othermachine components that receive, store, transmit, or displayinformation.

As used herein, the terms “comprises,” “comprising,” “includes,”“including,” “has,” “having” or any other variation thereof, areintended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus.

The patent claims at the end of this patent application are not intendedto be construed under 35 U.S.C. § 112(f) unless traditionalmeans-plus-function language is expressly recited, such as “means for”or “step for” language being explicitly recited in the claim(s).

Although the invention has been described with reference to theembodiments illustrated in the attached drawing figures, it is notedthat equivalents may be employed and substitutions made herein withoutdeparting from the scope of the invention as recited in the claims.

Having thus described various embodiments of the invention, what isclaimed as new and desired to be protected by Letters Patent includesthe following:
 1. A polygon simplification computer system forperforming polygon simplification within a web application pipeline,said system comprising: a polygon simplification server comprising: amemory device including a three-dimensional (3D) data model; a Node.jsenvironment; and a polygon simplification module running within theNode.js environment for performing one or more polygon simplificationoperations on the 3D data model, said polygon simplification modulecomprising: a binding component comprising a set of bindings thatconvert JavaScript code into C++ source code; and a mesh simplificationmodule comprising a C++ compiled polygon simplification framework, saidpolygon simplification module configured to: receive a request inJavaScript for the 3D data model from a client computing device; convertthe request for the 3D data model into a set of instructions written inC++ source code via the binding component; transmit the set ofinstructions to the mesh simplification module to instruct the C++compiled polygon simplification framework to load and simplify the 3Ddata model by decomposing the 3D data model into a plurality ofgeometrically separate component meshes, reducing the number ofpolygonal faces or triangles in each mesh, and reassembling the meshesinto a 3D simplified data model; receive, from the mesh simplificationmodule, the 3D simplified data model; and transmit the 3D simplifieddata model to the client computing device.
 2. The polygon simplificationcomputer system in accordance with claim 1, further comprising a webserver, said web server coupled in communication with the clientcomputing device.
 3. The polygon simplification computer system inaccordance with claim 2, wherein the web server is implemented in thepolygon simplification server.
 4. The polygon simplification computersystem in accordance with claim 1, wherein the request for the 3D datamodel includes one or more user specified arbitrary traits for vertices,edges, and faces of the 3D data model to be propagated to the meshsimplification module.
 5. The polygon simplification computer system inaccordance with claim 1, wherein the request for the 3D data modelincludes a set of predefined attributes to be propagated to the meshsimplification module.
 6. The polygon simplification computer system inaccordance with claim 1, further comprising a communication interfacecoupled in communication to said Node.js environment, said communicationinterface configured to receive the request for the 3D data model andtransmit the 3D simplified data model to one or more remote devices. 7.The polygon simplification computer system in accordance with claim 1,said polygon simplification module further configured to store the 3Dsimplified data model in said memory device.
 8. The polygonsimplification computer system in accordance with claim 1, wherein saidmesh simplification module is configured to smooth the 3D data model togenerate the 3D simplified data model.
 9. The polygon simplificationcomputer system in accordance with claim 8, wherein said meshsimplification module is further configured to generate a 3D mesh modelfrom the 3D data model.
 10. A computer-implemented method for performingpolygon simplification within a web application pipeline, said methodcomprising: receiving a request in JavaScript for a three-dimensional(3D) data model from a client computing device in a Node.js environment;converting the request for the 3D data model into a set of instructionswritten in C++ source code; transmitting the set of instructions to amesh simplification module to instruct a C++ compiled polygonsimplification framework to load and simplify the 3D data model bydecomposing the 3D data model into a plurality of geometrically separatecomponent meshes, reducing the number of polygonal faces or triangles ineach mesh, and reassembling the meshes into a 3D simplified data model;receiving, from the mesh simplification module, the 3D simplified datamodel; and transmitting the 3D simplified data model to the clientcomputing device.
 11. The computer-implemented method in accordance withclaim 10, wherein receiving the request comprises receiving identifyinginformation for the 3D data model.
 12. The computer-implemented methodin accordance with claim 11, wherein receiving the request furthercomprises receiving one or more user specified arbitrary traits forvertices, edges, and faces of the 3D data model to be propagated to themesh simplification module.
 13. The computer-implemented method inaccordance with claim 11, wherein receiving the request furthercomprises receiving a set of predefined attributes to be propagated tothe mesh simplification module.
 14. The computer-implemented method inaccordance with claim 10, further comprising smoothing the 3D data modelto generate the 3D simplified data model.
 15. The computer-implementedmethod in accordance with claim 14, further comprising generating a 3Dmesh model from the 3D data model prior to and the smoothing.
 16. Thecomputer-implemented method in accordance with claim 10, furthercomprising retrieving the 3D data model from a memory device.
 17. Thecomputer-implemented method in accordance with claim 10, furthercomprising storing the 3D simplified data model in a memory device. 18.Non-transitory computer-readable media having computer-executableinstructions, which upon execution by a processor, cause the processorto perform operations comprising: receiving a request in JavaScript fora three-dimensional (3D) data model from a client computing device in aNode.js environment; converting the request for the 3D data model into aset of instructions written in C++ source code; transmitting the set ofinstructions to a mesh simplification module to instruct a C++ compiledpolygon simplification framework to load and simplify the 3D data modelby decomposing the 3D data model into a plurality of geometricallyseparate component meshes, reducing the number of polygonal faces ortriangles in each mesh, and reassembling the meshes into a 3D simplifieddata model; receiving, from the mesh simplification module, the 3Dsimplified data model; and transmitting the 3D simplified data model tothe client computing device.
 19. The computer-readable media inaccordance with claim 18, wherein the computer-executable instructionsfurther cause the processor to perform smoothing the 3D data model togenerate the 3D simplified data model.
 20. The computer-readable mediain accordance with claim 18, wherein the computer-executableinstructions further cause the processor to perform generating a 3D meshmodel from the 3D data model prior to performing the smoothing.